package jv.redis.datatype.sortedset;

import java.util.Set;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.Tuple;

public class RedisSortedSet {
	Jedis jedis;
	@Before
	public void initRedis(){
		jedis = new Jedis("redis://192.168.1.108:6379");
	}
	
	@After
	public void closeRedis(){
		//注意不要使用jedis.shutdown()，这样会把服务器停掉。。。
		jedis.close();
	}
	
	@Test
	public void sortedSetOptions(){
		jedis.zadd("score:english",89, "lucy");
		jedis.zadd("score:english",89, "张三");
		jedis.zadd("score:english",90, "李四");
		jedis.zadd("score:english",91, "王五");
		jedis.zadd("score:english",92, "小六");
		jedis.zrem("score:english", "lucy");
		
		System.out.println(jedis.zrange("score:english", 0, 1));
		System.out.println(jedis.zrevrange("score:english", 0, 1));
		
		//Tuple对象的默认toString方法不会返回元素是字节，不是String，所以如果你需要返回的是String，那么需要继承Redis并重写zrangeWithScores方法
		Set<Tuple> st1 = jedis.zrangeWithScores("score:english", 0, 1);
		for(Tuple t:st1){
			System.out.println(t.getElement()+":"+t.getScore());
		}
		st1 = jedis.zrevrangeWithScores("score:english", 0, 1);
		for(Tuple t:st1){
			System.out.println(t.getElement()+":"+t.getScore());
		}
		//因为jedis的方法名和redis命令名称都一样，所以其他命令查看https://my.oschina.net/u/3049601/blog/1186376进一步了解
	}
}
